package com.basejace.common.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import com.jfinal.kit.StrKit;

public class DateTool {
	public static Map<String, SimpleDateFormat> dateFormatCache = new HashMap<String, SimpleDateFormat>();
	
	public static final String formatter = "yyyy-MM-dd HH:mm:ss";
	static {
		dateFormatCache.put(formatter, new SimpleDateFormat(formatter));
	}
	
	/**
	 * 获取默认的日期格式类
	 * @return
	 */
	public static SimpleDateFormat getInstance() {
		return dateFormatCache.get(formatter);
	}
	
	public static SimpleDateFormat getInstance(String pattern){
		if(StrKit.notBlank(pattern)){
			if(dateFormatCache.containsKey(pattern)){
				return dateFormatCache.get(pattern);
			}
			SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
			dateFormatCache.put(pattern, dateFormat);
			return dateFormat;
		}
		return getInstance();
	}


	/**
	 * 默认把 yyyy-MM-dd HH:mm:ss格式的字符串生成Date对象
	 * @param dateStr
	 * @return
	 * @throws ParseException
	 */
	public static Date toDate(String dateStr) throws ParseException {
		return getInstance().parse(dateStr);
	}
	
	/**
	 * 把 指定格式（format格式）的字符串生成Date对象
	 * @param dateStr
	 * @param format yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static Date toDate(String dateStr, String format) throws ParseException {
		return getInstance(format).parse(dateStr);
	}
	/**
	 * 默认把日期对象格式化成 时间字符串，默认格式为 yyyy-MM-dd HH:mm:ss
	 * @param date
	 * @return
	 */
	public static String toStr(Date date) {
		return getInstance().format(date);
	}
	
	/**
	 * 把 Date对象 生成指定格式（format格式）的字符串
	 * @param date
	 * @param format  全面格式为 yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static String toStr(Date date, String format) {
		return getInstance(format).format(date);
	}
}
